﻿<script type="text/javascript">
	
	//apply 方法把这个集合中的元素作为参数传递给被调用的函数：
	var func = function( a, b, c ){
		alert ( [ a, b, c ] ); // 输出 [ 1, 2, 3 ]
	};

	func.apply( null, [ 1, 2, 3 ] );


	//从第二个参数开始往后，每个参数被依次传入函数：
	var func = function( a, b, c ){
		alert ( [ a, b, c ] ); // 输出 [ 1, 2, 3 ]
	};

	func.call( null, 1, 2, 3 );

	//当使用call 或者apply 的时候，如果我们传入的第一个参数为null，函数体内的this 会指向默认的宿主对象，在浏览器中则是window：
	var func = function( a, b, c ){
		alert ( this === window ); // 输出true
	};

	func.apply( null, [ 1, 2, 3 ] );

	//但如果是在严格模式下，函数体内的this 还是为null：

	var func = function( a, b, c ){
		"use strict";
		alert ( this === null ); // 输出true
	}

	func.apply( null, [ 1, 2, 3 ] );

	//比如借用其他对象的方法。那么我们可以传入null 来代替某个具体的对象：
	Math.max.apply( null, [ 1, 2, 5, 3, 4 ] ) // 输出：5

</script>